package com.gking.processHarvest.controller;


import com.gking.processHarvest.common.Res;
import com.gking.processHarvest.dto.GetFriendShareProject.GetFriendShareProjectDto;
import com.gking.processHarvest.dto.ShareProjectDetailDto;
import com.gking.processHarvest.entity.ShareProject;
import com.gking.processHarvest.service.ShareProject.ShareProjectService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;


@Slf4j
@RestController
@RequestMapping("/share")
public class ShareProjectController {


    @Autowired
    private ShareProjectService shareProjectService;


    /**
     * 获取分享给好友的项目详情
     *
     * @param friendId 好友id
     * @return s
     */
    @GetMapping("/shareFriend/{friendId}")
    public Res<List<ShareProjectDetailDto>> getShareFriendList(@PathVariable String friendId) {
        log.warn("查询分享详情列表 id 的是： {}", friendId);
        if (friendId == null || friendId.equals("")) return Res.error("请将参数补充完整");
        return shareProjectService.getShareFriendList(friendId);
    }

    /**
     * 分享项目
     *
     * @param shareProject 项目信息
     * @return s
     */
    @PostMapping("/add")
    public Res<String> add(@RequestBody ShareProject shareProject) {
        log.warn("分享项目的相关信息为：{}", shareProject);
        return shareProjectService.add(shareProject.getFriendId(), shareProject.getProjectId());
    }


    /**
     * 删除项目
     *
     * @param shareProject 项目信息
     * @return s
     */
    @PutMapping("/delete")
    public Res<String> delete(@RequestBody ShareProject shareProject) {
        log.warn("删除项目的相关信息为：{}", shareProject);
        return shareProjectService.delete(shareProject.getFriendId(), shareProject.getProjectId());
    }


    /**
     * 获取好友分享给自己的项目列表
     *
     * @param friendId 好友id
     * @return s
     */
    @GetMapping("/friendShare/{friendId}")
    public Res<List<ShareProject>> getFriendShareList(@PathVariable String friendId) {
        log.warn("获取好友分享给自己的项目列表的好友 id 为 ：{}", friendId);
        if (friendId == null || friendId.equals("")) return Res.error("请将好友id参数补充完整！");
        return shareProjectService.getFriendShareList(friendId);
    }


    /**
     * 获取好友分享给自己的项目详情
     *
     * @param projectId 项目id
     * @return s
     */
    @GetMapping("/friendProject/{projectId}")
    public Res<GetFriendShareProjectDto> getFriendProjectDetail(@PathVariable String projectId) {
        log.warn("获取好友分享给自己的项目的项目 id 为 ：{}", projectId);
        if (projectId == null || projectId.equals("")) return Res.error("请将项目id参数补充完整！");
        return shareProjectService.getFriendProjectDetail(projectId);
    }
}
